package medOffice.mainbd;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

import medOffice.Paciente;
import medOffice.PlanoDeSaude;
import medOffice.Enuns.Sexo;
import medOffice.dao.PacienteDAO;

/**
 * Classe usada apenas para auxiliar na interface grafica.
 * @author Tiago Leite - tiagohsl@lcc.ufcg.edu.br
 * @version 0.1 </br> 02/10/09
 *
 */
public class MainPaciente {
	
	/**
	 * Metodo main
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		
		Scanner sc = new Scanner(System.in);
		PacienteDAO dao = new PacienteDAO();
			
		
		String resp;
			
		do{
			System.out.println("Digite a Opção:");
			System.out.println("1- criar paciente");
			System.out.println("2- recuperar pacientes");
			System.out.println("3- atualizar paciente por cpf");
			System.out.println("4- deletar paciente");
			System.out.println("5- sair");
			
			Paciente paciente = new Paciente();
			
			
			resp = sc.nextLine();
			
			if (resp.equals("1")){
				
				System.out.println("Digite o nome do paciente: ");
				String nome = sc.nextLine();

				System.out.println("Digite o telefone do paciente: ");
				String telefone = sc.nextLine();
				
				System.out.println("Digite o email do paciente: ");
				String email = sc.nextLine();
				
				System.out.println("Digite o endereco do paciente: ");
				String endereco = sc.nextLine();
				
				System.out.println("Digite a cpf do paciente: ");
				String cpf = sc.nextLine();
				
				System.out.println("Digite o sexo do paciente (F ou M): ");
				String sexo = sc.nextLine();
				
				System.out.println("Digite a data de nascimento do paciente: (dd/mm/aaaa) ");
				String data = sc.nextLine();
				
				/*como havera uma serie de planos criados antes de um paciente
				 *, ele ira escolher o plano no qual eh associado, caso ele nao
				 * seja socio de nenhum plano, a consulta sera Particular que
				 * tem como codigo 900.
				 */ 
				System.out.println("Digite o codigo do plano do paciente: ");
				String codigoPlano = sc.nextLine();
				PlanoDeSaude p1 = new PlanoDeSaude(Integer.parseInt(codigoPlano));	
				
				paciente.setNome(nome);
				paciente.setTelefone(telefone);
				paciente.setEmail(email);
				paciente.setPlanoDeSaude(p1);
				paciente.setEndereco(endereco);
				paciente.setCPF(cpf);
				paciente.setSexo(Sexo.valueOf(sexo));
				paciente.setDataDeNascimento(conversorData(data));
				
				dao.create(paciente);
			}
			
			if (resp.equals("2")){
				System.out.println("Listando Pacientes:");
				dao.recuperaDadosPacientes();
			}
			
			if (resp.equals("3")){
				System.out.println("Digite o cpf do paciente:");
				String cpf = sc.nextLine();
				System.out.println("Digite o novo cpf do paciente:");
				String novoCPF = sc.nextLine();
				dao.update(cpf, novoCPF);
			}
			
			if (resp.equals("4")){
				System.out.println("Digite o cpf do paciente:");
				String cpf = sc.nextLine();
				dao.delete(cpf);
			}
			
			
		}while (!resp.equals("5"));
		
		dao.closeConnection();
		
	}
	
	/**
	 * Metodo usado para converter uma String em um Calendar num dado formato..
	 * @param String data
	 * @return Calendar data
	 * @throws ParseException
	 */
	public static Calendar conversorData(String data) throws ParseException {
		DateFormat format;
		Date data_nova;
		format = new SimpleDateFormat("dd/MM/yyyy");
		data_nova = (Date)format.parse(data);
		Calendar cal = Calendar.getInstance();
		cal.setTime(data_nova);
		return cal;
		
	}
}